
const db = uniCloud.database();

const jwt = require('')

module.exports = async function (code){
    // 有 code  当然立即请求 openid
    const reqUrl =
      `${MP_WX_OPENIDREQUESTURL}?appid=${MP_WX_APPID}&secret=${MP_WX_XAPPSECRET}&js_code=${code}&grant_type=authorization_code`
    const wxRes = await uniCloud.httpclient.request(reqUrl, {
      dataType: "json"
    })
    const userId = wxRes.data.openid
    // 有了openid 就可以生成 token 啦
    const token = 'Bearer '+ jwt.sign({userId},jwtSecret)
    // 如果获得的 openid 存在就抛出错误
    if (!userId) {
      throw Error(wxRes.data.errmsg)
    }
    //openid 存在 先去数据库里查用户是否在库
    const user = await db.collection('xy-user').doc(userId).get()

    // 如果用户存在直接返回用户信息
    if (user.data[0]) {
      return {
        user: user.data[0],
        token
      }
    }
    // 如果用户不存在入库
    // 先准备数据
    let data = {
      _id: userId,
      creatTime: Date.now()
    }
    await db.collection("xy-user").add(data)
    return {
      user: data,
      token
    }
  }